if(!window.Berta) window.Berta = {};
if(!Berta.Pane) Berta.Pane = {};

Berta.Panel.addPaneDefinition('contextual', new Class(function(){

	return {
		extend: Berta.Pane,
		
		defaults: {
			type: 'contextual'
		},
		
		contextSettings: null,
		
		
		constructor: function(options) {
			Berta.Pane.call(this, options);
			this.setTitle('Properties');

			this.elements.body.addClass('x-pane-contextual');
			this.displayDefaultContents();

			$('.x-article-create-new').live('click', onNewArticleClick);
		},
		
		//   .______    __    __  .______    __       __    ______    ////////////////////////////////////////////////////////////
		//   |   _  \  |  |  |  | |   _  \  |  |     |  |  /      |   ////////////////////////////////////////////////////////////
		//   |  |_)  | |  |  |  | |  |_)  | |  |     |  | |  ,----'   ////////////////////////////////////////////////////////////
		//   |   ___/  |  |  |  | |   _  <  |  |     |  | |  |        ////////////////////////////////////////////////////////////
		//   |  |      |  `--'  | |  |_)  | |  `----.|  | |  `----.   ////////////////////////////////////////////////////////////
		//   | _|       \______/  |______/  |_______||__|  \______|   ////////////////////////////////////////////////////////////

		
		beforeOpen: /*override */ function() {		// start loading content
			//this.render();
		},
		afterOpen: /*override */ function() {
			this.setHeight(200);
		},
		
		beforeClose: /* override */ function() {},
		afterClose: /* override */ function() {
			//this.empty();
		},
		
		contextOn: /* unique API */ function(settings) {
			this.wasOpenBeforeContextOn = this.isOpen;
			this.contextSettings = settings;
			if(!this.isLocked && (this.isOpen || this.open())) {
				this.lockingOn();
				
				this.hideDefaultContents();
				
				// TODO: settingsRenderer keeps track on rendered settings
				
				this.fill(Berta.SettingsRenderer.instance().getRenderedFromNamesList(this.contextSettings, 'panel'));
				
				return true;
			} else {
				this.contextSettings = null;
				return false;
			}
		},
		contextOff: /* unique API */ function() {
			if(this.contextSettings) {
				this.lockingOff();
				
				
				// TODO: tell sttingsRenderer to clean up
				
				
				this.empty();	// unregister editables and empty
				this.displayDefaultContents();
				
				if(!this.wasOpenBeforeContextOn) {
					this.close();
				}
				return true;
			}
			return false;
		},
		
		
		
		displayDefaultContents: function() {
			if(!this.defaultContents) this.defaultContents = this._(getDefaultContents)();
			this.fill(this.defaultContents);
		},
		hideDefaultContents: function() {
			if (this.defaultContents) {
				this.defaultContents.detach();
			}
		},
		
		destroy: function() {
			if (this.defaultContents) {
				Berta.EditorManager.instance().unregisterEditables(this.defaultContents.find('.x-editable'));
				this.defaultContents.empty();
			}
			Berta.Pane.prototype.destroy.call(this);
		}
		
	};


	//   .______   .______     __  ____    ____  ___   .___________. _______    //////////////////////////////////////////////////
	//   |   _  \  |   _  \   |  | \   \  /   / /   \  |           ||   ____|   //////////////////////////////////////////////////
	//   |  |_)  | |  |_)  |  |  |  \   \/   / /  ^  \ `---|  |----`|  |__      //////////////////////////////////////////////////
	//   |   ___/  |      /   |  |   \      / /  /_\  \    |  |     |   __|     //////////////////////////////////////////////////
	//   |  |      |  |\  \--.|  |    \    / /  _____  \   |  |     |  |____    //////////////////////////////////////////////////
	//   | _|      | _| `.___||__|     \__/ /__/     \__\  |__|     |_______|   //////////////////////////////////////////////////

	function getDefaultContents() {
		var els;

		if(Berta.Options.section_id === null) {
			els = $('<h4>Hola!</h4>')
					.add($('<p />').append('<a href="#" class="x-button x-widget-create-new">create new mainpage widget</a>'));

		} else {
			els = $('<h4>Hola!</h4>')
					.add($('<p />').append('<a href="#" class="x-button x-article-create-new">create new entry</a>'))
					//.add($('<p />').append('<a href="#" class="x-button x-widget-create-new">create new global widget</a>'));
		}

		return els;
	}


	// Event listeners....

	function onNewArticleClick(event) {
		Berta.Controller.execCommand('articles:create');
		return false;
	}


}()));
